난수와 키 분배
난수와 키 분배
암호 시스템의 핵심 자원 관리 — 난수 생성과 키 전달
난수 활용
| 용도 | 설명 |
|---|---|
| 공개키 암호화 키 생성 | RSA, ECC 등의 키 쌍 생성 |
| 대칭 스트림 암호의 키스트림 | RC4 등 |
| 세션키 / 전자봉투용 대칭키 | 임시 세션 암호화 |
| 재사용 공격 방지 | 핸드셰이킹 논스(Nonce) |
난수 요구사항
임의성
- 균등분포: 숫자 발생 빈도가 대략적으로 동일
- 독립성: 어떤 값도 다른 값으로부터 추론 불가
비예측성
- 통계적으로 각 숫자는 연속하는 숫자에 대해 독립적
- 초기 요소로부터 미래 요소 예측 불가
진성 난수 vs 의사 난수
| 구분 | 특징 |
|---|---|
| 의사 난수 (PRNG) | 알고리즘으로 생성, 통계적 임의성은 만족하나 예측 가능 |
| 진성 난수 (TRNG) | 비결정성 소스(열잡음, 키 입력 타이밍 등) 활용, 예측 불가 |
암호 어플리케이션은 알고리즘 기반 PRNG 주로 사용 → 초기 시드(seed)가 중요
암호화 위치
링크 암호화 (Link Encryption)
A ──[암호화]── 중간 노드 ──[복호화→재암호화]── 중간 노드 ──[복호화]── B
- 헤더를 포함한 모든 정보 암호화
- 단점: 중간 노드에서 복호화 필요 (경로 지정용) → 각 스위치에서 취약
종단 간 암호화 (End-to-End Encryption)
A ──[암호화: 데이터만]──────────────────────────── B
헤더는 평문 (중간 노드가 경로 지정 가능)
- 단점: 헤더 암호화 불가 → 트래픽 패턴 분석에 취약
해결: 두 방식 동시 사용 (링크 + 종단 간)
키 분배
두 집단이 서로 키를 노출하지 않고 동일한 키를 공유하는 방법
| 방법 | 설명 | 적용 |
|---|---|---|
| A가 키 선택 후 B에게 물리적 전달 | 안전하나 비효율 | 링크 암호화 |
| 제3자가 A, B에게 물리적 전달 | 안전하나 비효율 | 링크 암호화 |
| 이전 키로 새 키 암호화 전달 | 효율적, 이전 키 노출 시 연쇄 위험 | 링크/종단 간 |
| 제3자(KDC)가 암호 채널로 전달 | 가장 일반적 | 링크/종단 간 |
세션키 vs 영구키
| 구분 | 설명 |
|---|---|
| 세션키 | 데이터 전송용 일회용 키, 세션 종료 시 파괴 |
| 영구키 | 세션키 분배 목적, KDC나 공인인증 서버에서 관리 |
KDC (Key Distribution Center)
- 두 노드 간 통신 허용 여부 결정
- 허용 시 일회용 세션키 제공
- 보안 서비스 모듈(SSM): 단말에 위치, 프로토콜 계층으로 구성